package common

import (
	"my_music_server/common/utils"
	"net/http"
)

//使用建造者模式

type R struct {
	Success      bool                   `json:"success"`       //是否成功
	Code         int                    `json:"code"`          //返回码
	Message      string                 `json:"message"`       //返回消息
	IdempotentID string                 `json:"idempotent_id"` //幂等ID（防止重复提交，后端保存于缓存中）
	Data         map[string]interface{} `json:"data"`          //返回数据
}


func Ok() *R {
	//TODO 生成防重id，保存入缓存中,设置过期时间
	return &R{
		Success:      true,
		Code:         http.StatusOK,
		IdempotentID: utils.GetUUID(),
		Message:      "成功",
	}
}

func Error() *R {
	return &R{
		Success:      false,
		Code:         http.StatusInternalServerError,
		IdempotentID: utils.GetUUID(),
		Message:      "失败",
	}
}

func (r *R) SetMessage(message string) *R {
	r.Message = message
	return r
}

func (r *R) DataMP(mp map[string]interface{}) *R {
	r.Data = mp
	return r
}

func (r *R) DataKV(key string, value interface{}) *R {
	r.Data = map[string]interface{}{key: value}
	return r
}
